#include "struct.h"
/*****************************************
**  Nom :	RASPAUD						**
**	Nom du fichier : init_partie		**
**	Description : initialise tous les 
	paquets de cartes					**
**										**
**										**
**	Date:	20/08/2014				    **
**  Statut:Closed						**
*****************************************/

/*************************************************
**  Zone de déclaration des Fonctions PUBLIC    **
*************************************************/

/*************************************************************************
**  init_partie			                		    					**
**  Description de la fonction	:initialise tous les 
	paquets de cartes 													**
**																		**
**	Entrees : FIFO_PAQUET --> FIFO du paquet "table" 					**
**			  FIFO_PAQUET --> FIFO du paquet "J1" 	
			  FIFO_PAQUET --> FIFO du paquet "J2" 
			  FIFO_PAQUET --> FIFO du paquet "J3" 
			  FIFO_PAQUET --> FIFO du paquet "J4" 						**
**																		**
**	Sorties : int --> si -1=Erreur // si 0-OK							**
**									                                    **
**									                                    **
**************************************************************************/
int init_partie(FIFO_PAQUET *table, FIFO_PAQUET *J1, FIFO_PAQUET *J2, FIFO_PAQUET *J3, FIFO_PAQUET *J4)
{
	int test=-1,random=0,i=1,valid[NOMBRE_JOUEUR],random2=0;
	S_CARTE *courante=NULL;
	
	valid[0]=0; // Benjamin et/ou Mathieu vont me faire une remarque sur ces 4 lignes :) LOL 
	valid[1]=0;
	valid[2]=0;
	valid[3]=0;
	test=init_paquet(table);
	if(test==-1)
	{
		printf("init_partie : Erreur lors de l'init du paquet table !\n");
		return -1;
	}

	// 52 cartes / 4 = 13 cartes par personnes
	srand(time(NULL)); //ligne obligatoire pour que le nombre retourné par int_random soit différent à chaque appel
	while(i<=NOMBRE_CARTE_PAR_JOUEUR)
	{
		while(valid[0]!=1 || valid[1]!=1 || valid[2]!=1 || valid[3]!=1)
		{
			random=int_random(NOMBRE_JOUEUR); //NOMBRE_JOUEUR=constante
			//printf("init_partie : random=%d\n",random);
			if(random==0)
			{
				printf("init_partie : Erreur de la fonction 'int_random' !\n");
				return -1;
			}
////////////////////////////////////////////////////////////////////////////////////////////////////////			
			if(random==1 && valid[0]==0)
			{
				random2=int_random(NOMBRE_JOUEUR);
				if(random2==0)
				{
					printf("init_partie : Erreur de la fonction 'int_random' !\n");
					return -1;
				}
				if(random2<=2)
				{
					test=echange_FIFO_in(table,J1);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_in' case 1\n");
						return -1;
					}
				}
				else
				{
					test=echange_FIFO_out(table,J1);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_out' case 1\n");
						return -1;
					}
				}
				valid[0]=1;
				//printf("init_partie : valid[0]=1\n");
			}
///////////////////////////////////////////////////////////////////////////////////////////////////////
			if(random==2 && valid[1]==0)
			{
				random2=int_random(NOMBRE_JOUEUR);
				if(random2==0)
				{
					printf("init_partie : Erreur de la fonction 'int_random' !\n");
					return -1;
				}
				if(random2<=2)
				{
					test=echange_FIFO_in(table,J2);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_in' case 2\n");
						return -1;
					}
				}
				else
				{
					test=echange_FIFO_out(table,J2);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_out' case 2\n");
						return -1;
					}
				}
				valid[1]=1;
				//printf("init_partie : valid[1]=1\n");
			}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
			if(random==3 && valid[2]==0)
			{
				random2=int_random(NOMBRE_JOUEUR);
				if(random2==0)
				{
					printf("init_partie : Erreur de la fonction 'int_random' !\n");
					return -1;
				}
				if(random2<=2)
				{
					test=echange_FIFO_in(table,J3);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_in' case 3\n");
						return -1;
					}
				}
				else
				{
					test=echange_FIFO_out(table,J3);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_out' case 3\n");
						return -1;
					}
				}
				valid[2]=1;
				//printf("init_partie : valid[2]=1\n");
			}
////////////////////////////////////////////////////////////////////////////////////////////////////////
			if(random==4 && valid[3]==0)
			{
				random2=int_random(NOMBRE_JOUEUR);
				if(random2==0)
				{
					printf("init_partie : Erreur de la fonction 'int_random' !\n");
					return -1;
				}
				if(random2<=2)
				{
					test=echange_FIFO_in(table,J4);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_in' case 4\n");
						return -1;
					}
				}
				else
				{
					test=echange_FIFO_out(table,J4);
					if(test==-1)
					{
						printf("init_partie : Erreur dans 'echange_FIFO_out' case 4\n");
						return -1;
					}
				}
				valid[3]=1;
				//printf("init_partie : valid[3]=1\n");
			}
		}
		i++;
		valid[0]=0; // Benjamin et/ou Mathieu vont me faire une remarque sur ces 4 lignes :) LOL 
		valid[1]=0;
		valid[2]=0;
		valid[3]=0;
	}
	return 0;
}

